main() {
  // dynamic 动态类型 什么类型都可以 就是any
  List goodsList = [
    {"id": 1, 
    "price": 22.68, 
    "count": 3, 
    "goods_name": "西瓜", 
    "selectd": true},
    {"id": 2, 
    "price": 11.99, 
    "count": 3,
     "goods_name": "草莓",
      "selectd": true},
    {
      "id": 3,
      "price": 60.99,
      "count": 1,
      "goods_name": "车厘子",
      "selectd": false
    },
    {
      "id": 4,
      "price": 11.68,
      "count": 3,
      "goods_name": "平谷大桃",
      "selectd": false
    }
  ];

  //1.1 计算选中商品的总金额
  double totalPrice=0;
  for(int i=0;i<goodsList.length;i++){
    if(goodsList[i]['selectd']){
      totalPrice+=goodsList[i]['price']*goodsList[i]['count'];
    }
  }
  print(totalPrice);
  
//1.2.打印选中商品的总金额  保留两位小数
print('选中商品的总金额为：${totalPrice.toStringAsFixed(2)}');
//2.1 for in 循环
double totalCount=0;
for(var item in goodsList){
  if(item['selectd']){
    totalCount+=item['count']*item['price'];

  }
}
//2.2 打印选中商品的总金额
print('选中商品的总金额为：${totalCount.toStringAsFixed(2)}');
//3.1forEach循环遍历
goodsList.forEach((item){
  if(item['selectd']){
    totalCount+=item['count']*item['price'];
  }
});
//3.2 打印选中商品的总金额
print('选中商品的总金额为：${totalCount.toStringAsFixed(2)}');

//4.1 reduce 方法 会把第一项作为初始值(不适合当前场景)
List<num> list=[1,2,3,4,5];
num totalPrice2=list.reduce((value, element) => value+element);


//4.2 打印选中商品的总金额
print('选中商品的总金额为：${totalPrice2.toStringAsFixed(2)}');
//5.1 fold 方法 可以指定初始值 ,适合当前购物车场景
double totalPrice3=goodsList.fold(0, (value, element) {
  if(element['selectd']){
    return value+element['price']*element['count'];
  }
  return value;
});
//5.2 打印选中商品的总金额
print('选中商品的总金额为：${totalPrice3.toStringAsFixed(2)}');
//6.1筛选选中商品 where-filter
List<dynamic> selectedGoods=goodsList.where((element) => element['selectd']).toList();
//6.2 打印选中商品
print(selectedGoods);


}